﻿@{
    ViewBag.Title = "Lobbie";
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script>

<script type="text/javascript">
    var c = 0;
    var t;
    var timer_is_on = 0;

    $(document).ready(function () {
        doTimer();
    });
    
    function doTimer() {
        if (!timer_is_on) {
            timer_is_on = 1;
            listRoomRefresh();
        }
        return false;
    }

    function listRoomRefresh() {
        // Send an AJAX request
        // falta implementar a paginação: page = número da página e take = tamanho da página
        $.getJSON("/Game/GetLobbyRooms/1?page=1&take=10",
            function (data) {
                $("#roomList").empty();
                // On success, 'data' contains a list of rooms of lobby 1.
                $.each(data, function (key, val) {
                    // Format the text to display.
                    var str = '<a href="#" onClick="accessRoom(' + val.Id + ')">'
                            + 'Sala: ' + val.Id
                            + ' - Nome: ' + val.Name
                            + ' - Situação: ' + val.State
                            + '</a>';

                    // Add a list item for the room.
                    $('<li/>', { html: str })
                    .appendTo($('#roomList'));
                });
            });

        t = setTimeout("listRoomRefresh()", 3000); //refresh de 5 segundos.
        return false;
    }

    var getValidationSummaryErrors = function () {
        // We verify if we created it beforehand
        var errorSummary = $("#ibody").find('.validation-summary-errors, .validation-summary-valid');
        if (!errorSummary.length) {
            errorSummary = $('<div class="validation-summary-errors"><span>Please correct the errors and try again.</span><ul></ul></div>')
                .prependTo($("#ibody"));
        }

        return errorSummary;
    };

    var displayErrors = function (errors) {
        var errorSummary = getValidationSummaryErrors()
            .removeClass('validation-summary-valid')
            .addClass('validation-summary-errors');

        var items = $.map(errors, function (error) {
            return '<li>' + error + '</li>';
        }).join('');

        var ul = errorSummary
            .find('ul')
            .empty()
            .append(items);
    };

    function accessRoom(room) {
        // Implementar a tentativa de acessar a sala.
        // Se não tiver lugar disponível, então deve avisar e voltar ao lobby.
        // Se tiver lugar disponível, então deve ocupar o próximo lugar disponível e redirecionar para a sala de espera.
        // Ao ocupar o lugar é preciso alterar o player para setar a sala que está acessando e colocá-lo no lugar da sala.
        $.post("/Game/LobbyAccessRoom", { roomId: room })
            .done(function (json) {
                json = json || {};

                // In case of success, we redirect to the provided URL or the same page.
                if (json.success) {
                    if (json.redirect) {
                        $(location).attr('href', "/" + json.redirect);
                    }
                    else {
                        location = location.href;
                    }
                } else if (json.errors) {
                    displayErrors(json.errors);
                }
            })
            .error(function () {
                displayErrors(['An unknown error happened.']);
            });

        return false;
    }
</script> 

</head>
<body>
    <div id="ibody">
        <div class="content-wrapper">
            <h1>@ViewBag.Title</h1>
        </div>

        <h3>Salas do jogo:</h3>
        <div>
            <ul id='roomList' />
        </div>
    </div>
</body>
</html>